1. Field of the Invention
The present invention relates generally to an apparatus and method for providing error correction in a code division multiple access (CDMA) mobile communication system, and in particular, to an apparatus and method for providing forward error correction (FEC) using turbo codes.
2. Description of the Related Art
A conventional CDMA mobile communication system corrects errors caused by noise in a transport channel. FEC is a technique for encoding an information codeword using an error correction method at a transmitter and recovering the information codeword by decoding the received codeword at a receiver. Major FEC techniques currently being used are convolutional coding and turbo coding.
Turbo codes have recently been adopted as error correction codes in both 3rd generation synchronous and asynchronous mobile communication systems. It is known that the turbo codes offer a higher performance gain than the convolutional codes which have been widely used. Besides, the turbo codes are effective in correcting noise-incurred errors and as a result, increase data transmission reliability.
A turbo encoder is configured such that it generates parity symbols from an input frame having L information bits using two simple parallel concatenated codes. It uses recursive systematic convolutional (RSC) codes as component codes. Thus, turbo codes are generated by concatenating two RSC encoders using an interleaver. For turbo decoding, soft input soft output (SISO) decoders for the respective component codes are concatenated in parallel. Extrinsic information output from the SISO decoders is exchanged for iterative decoding. Timing to stop the iterative decoding, and maintain decoding performance is a significant factor that determines the power consumption of the turbo decoder and the time delay involved with the decoding. In other words, an error check must be performed often on a frame during decoding, usually using cyclic redundancy check (CRC) bits in order to shorten the decoding time and minimize the power consumption. Specifically, the transmitter attaches CRC bits to each frame input to the turbo encoder, and the receiver detects errors from a decoded frame using CRC bits in each decoding iteration. If the frame turns out normal, the decoding is no longer performed for the frame.
Now a description will be made of criterions to stop iterative decoding (hereinafter, referred to as stopping criterions).
The stopping criterions must satisfy Condition 1.
Condition 1: Stop decoding iterations if M(i)>T(i) or M(i)=T(i) at any SISO decoder in an ith iteration.
In Condition 1, M(i) is a measurement representing the performance of a turbo decoding frame in the ith decoding iteration, and T(i) is a threshold predetermined or determined in the ith decoding iteration, to be compared with the measurement to determine whether the decoded frame has errors or not. If Condition 1 is satisfied in the comparison, the decoding is stopped in the ith decoding iteration. Each full iteration consists of 2 sequential half iterations, one in each SISO decoder of a turbo decoder.
Stopping criterions proposed so far for iterative decoding will be described below.
(1) Genie-Aided Stopping Criterion
A kind of simulator, Genie monitors iterative decoding in a turbo decoder, compares an output decoded information codeword from a SISO decoder with transmitted information and stops the decoding when no errors are detected in the comparison. This method is viable only in a simulation because it presupposes an ideal test environment. Hence the Genie-aided stopping criterion stands as an ideal for other stopping criterions. The Genie-aided Stopping Criterion is represented as Condition 2.
Condition 2: Stop decoding iterations if M(i)=T(i) at any SISO decoder in an ith iteration.
In Condition 2, a measurement M(i) is the number of different bits between a transmitted frame and a decoded frame at any SISO decoder in the ith iteration, and a threshold T(i) is 0.
(2) CRC Check Stopping Criterion
A frame input to a turbo encoder contains CRC bits for error detection so that the presence or absence of errors in the frame after turbo decoding can be reported to a higher layer in the CDMA mobile communication system. The capability of detecting errors in a frame makes a CRC check feasible as a stopping criterion. A CRC check detects errors from an input frame during iterative decoding in a turbo decoder and if the frame turns out normal, the decoding iterations are stopped. The CRC Stopping Criterion is represented as Condition 3.
Condition 3: Stop decoding iterations if M(i)=T(i) at any SISO decoder in an ith iteration.
In Condition 3, M(i) represents a CRC check output for a decoded frame at any SISO decoder in the ith iteration and T(i) is 0.
The CRC Stopping Criterion, however, has the shortcomings that CRC-caused overhead is imposed on each frame and if an input frame segment does not have CRC bits, it cannot be decoded based on the CRC stopping criterion. For example, when two or more code units are used in a high speed downlink packet access (HSDPA) communication system of a universal mobile telecommunication system (UMTS), CRC bits are not always present in a code unit. In this sense, the CRC Stopping Criterion is not suitable for turbo decoding.
(3) Approximated Cross Entropy Stopping Criterion
Generally, the cross entropy (CE) between two probability distributions can be used as a measurement representing the probabilistic closeness between them. Hagenauer defines and simplifies the CE using Log Likelihood Ratio (LLR) as a measurement for a stopping criterion in a turbo decoder. If the measurement decreases and thus the probabilistic closeness between SISO decoder outputs becomes substantially great, decoding is stopped.
The Approximated Cross Entropy Stopping Criterion is represented as Condition 4.
Condition 4: Stop decoding iterations if M(i)<T(i) at any SISO decoder in an ith iteration.
In Condition 4,
      M    ⁡          (      i      )        =            ∑      k        ⁢                  ⁢                                                                                L                1                                  (                  i                  )                                            ⁡                              (                                  u                  k                                )                                      -                                          L                2                                  (                                      i                    -                    1                                    )                                            ⁡                              (                                  u                  k                                )                                                              2                    exp        ⁡                  (                                                                L                2                                  (                                      i                    -                    1                                    )                                            ⁡                              (                                  u                  k                                )                                                          )                    at a first SISO decoder, or
      M    ⁡          (      i      )        =            ∑      k        ⁢                  ⁢                                                                                L                2                                  (                  i                  )                                            ⁡                              (                                  u                  k                                )                                      -                                          L                1                                  (                  i                  )                                            ⁡                              (                                  u                  k                                )                                                              2                    exp        ⁡                  (                                                                L                1                                  (                  i                  )                                            ⁡                              (                                  u                  k                                )                                                          )                    at a second SISO decoder. T(i) is between 10−2 and 10−4.
The Approximated Cross Entropy Stopping Criterion requires exp(·) operation at each SISO decoder, thereby increasing hardware complexity.
(4) Hard Decision Aided (HDA) Stopping Criterion
Information codewords output from two SISO decoders are compared in each decoding iteration. If there is no difference between them, the decoding is stopped. The HDA Stopping Criterion is represented as Condition 5.
Condition 5: Stop decoding iterations if M(i)>T(i) at any SISO decoder in an ith iteration.
In Condition 5, M(i) is the number of different bits between decoded information frames in the ith and (i−0.5)th iterations and T(i) is 0.
Due to comparisons between a previous SISO decoder output and a current SISO decoder output, the HDA Stopping Criterion requires an additional memory for storing the previous SISO decoder output.
(5) Minimum Absolute LLR (MAL) Stopping Criterion
A novel stopping criterion has been created by approximating a measurement used in the Approximated Cross Entropy Stopping Criterion of Hagenauer,
                                          ∑            k                    ⁢                                          ⁢                                                                                      Δ                  ⁢                                                                          ⁢                  L                  ⁢                                                                          ⁢                                                            e                      v                      i                                        ⁡                                          (                                                                        u                          ^                                                k                                            )                                                                                                  2                                      exp              ⁡                              (                                                                                              L                      1                                              (                        i                        )                                                              ⁡                                          (                                                                        u                          ^                                                k                                            )                                                                                        )                                                    ≈                  K          ·                      exp            ⁢                          (              k                              -                min                                      ⁢                          (                                                                                    L                    1                                          (                      i                      )                                                        ⁡                                      (                                                                  u                        ^                                            k                                        )                                                                              )                        )                                              (        1        )            
The MAL Stopping Criterion is represented as Condition 6.
Condition 6: Stop decoding iterations if M(i)>T1(i) and M(i)>T2(i) at any SISO decoder in an ith iteration.
In Condition 6, M(i)=km min(|L1(i)(ûk)|) at a vth SISO decoder in the ith iteration. T1(i)=j<im min M(j)+Tf and T2(i)=M1+Td.
In accordance with the MAL Stopping Criterion, a minimum absolute LLR output from a SISO decoder is set as a measurement. A measurement set in the previous iteration is used as a threshold in the current iteration. While the Approximated Entropy Stopping Criterion and the HDA Stopping Criterion use information from two SISO decoders, the MAL Stopping Criterion can stop decoding iterations only using information from the current SISO decoder. As a result, performance may be degraded in terms of frame error rate (FER). To minimize the performance degradation, Tf and Td for the first and second thresholds T1(i) and T2(i) are empirically obtained from a simulation. The thresholds are adaptively used to reduce performance independency of frame size or SNR (Signal to Noise Ratio). Yet, the adaptive use of the thresholds increases the average number of decoding iterations. In other words, an increase in the number of decoding iterations must be suffered to prevent FER performance degradation.
(6) Sign Difference Ratio (SDR) Stopping Criterion
The HDA Stopping Criterion compares information codewords from first and second SISO decoders in a turbo decoder in each half iteration and stores an output information codeword from the previous SISO decoder when the current SISO decoder completes decoding. Therefore, the HDA Stopping Criterion needs an additional memory. To remove the additional hardware implementation, the SDR Stopping Criterion has been proposed. Instead of comparing an information codeword from the current SISO decoder with that from the previous SISO decoder, the signs of a-priori information and extrinsic information for a frame in one SISO decoder are compared, and decoding is stopped according to the number of different signs.
The SDR Stopping Criterion is represented as Condition 7.
Condition 7: Stop decoding iterations if M(i)<T(i) at any SISO decoder in an ith iteration.
In Condition 7, M(i) is the number of different signs between a-priori information and extrinsic information for a decoded information frame at any SISO decoder in the ith iteration and T(i) is p.
Since a-priori information and extrinsic information are converged more slowly than LLR information, the SDR Stopping Criterion with p=0 has a greater average number of decoding iterations than the HDA Stopping Criterion. Though the average number of decoding iterations is decreased by increasing p, FER performance degradation results.
Among the above-described Stopping Criterions, the HDA Stopping Criterion has relatively excellent FER performance. Despite this advantage, requires an additional memory for storing an information codeword from a previous SISO decoder. The SDR Stopping Criterion obviates the need for the additional memory because it compares the signs of input a-priori information and output extrinsic information at a SISO decoder. Depending on a threshold, however, FER performance is degraded, or the average decoding iteration number increases, thereby increasing power consumption. The MAL Stopping Criterion offers relatively excellent performance using a easily computed minimum absolute LLR. Yet, it also has the distinctive shortcoming that FER performance varies depending on a threshold. Accordingly, there is a need for creating a novel stopping criterion using a simply set threshold, for stopping decoding iterations.